package com.itheima.tlias84.mapper;

import com.itheima.tlias84.dto.SelectAllDeptDTO;
import com.itheima.tlias84.entity.Dept;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 部门mapper
 * 注册mapper@
 * 注意：
 * 1、增删改查全部跟id有关联
 */
@Mapper
public interface DeptMapper {
    /**
     * 查询所有部门，根据更新时间倒序排序
     * 根据更新时间倒序排序order by update_time desc
     *
     * @return 结果集合
     */
    @Select("select id,name,update_time from dept order by update_time desc ")
    List<SelectAllDeptDTO> selectAll();

    /**
     * 插入部门
     *
     * @param dept 部门对象
     * @return 影响行数
     */
    @Insert("insert into dept (name,create_time,update_time) values(#{d.name},#{d.createTime},#{d.updateTime})")
    int insertDept(@Param("d") Dept dept);


    /**
     * 根据id删除部门
     *
     * @param id 想要删除的部门id
     * @return 影响行数
     */
    @Delete("delete from dept where id = #{id}")
    int deleteById(@Param("id") Integer id);

    @Select("select id,name from dept where id = #{id}")
    SelectAllDeptDTO selectDeptById(@Param("id") Integer id);

    /**
     * 根据id修改部门
     * 可以给两个参数，也可以直接给一个对象
     * -->一个请求只有一个请求体-->controller只有一个参数
     * //@param id id
     * //@param name 姓名
     * @return 影响行数
     */
    @Update("update dept set name = #{d.name},update_time = #{d.updateTime} where id = #{d.id} ")
    int updateDeptById(@Param("d") Dept dept);


    /**
     * 批量删除部门
     * @param ids id集合
     * @return 数量删除
     */
    int batchDelete(@Param("ids") List<Integer> ids);

    /**
     * 根据名称查询部门
     */
    @Select("select id,name from dept where name = #{name}")
    Dept selectDeptByName(@Param("name") String name);



    /**
     * 批量插入部门
     * @param list 部门集合
     * @return 插入行数
     */
    int insertDeptBatch(@Param("list") List<Dept> list);
}
